import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * La clase numero representa un numero en el escenario.
 * este puede tomar valores del 0 al 9.
 * 
 * @author Daniel Sánchez Ovalle. 
 * @author Alcantar Noyola Cristian Andres. 
 * @version 29-04-2013
 */
public class Numero extends Actor
{
    private int numero;
    private GreenfootImage num[]=new GreenfootImage[10]; //Indica el numero de imagenes

    /**
     * Constructor de numero.
     * @param cant es la cantidad con la que iniciara el numero.
     */
    public Numero(int cant)
    {
        this.cargarImagenesNumeros();
        if(numero<0)
            numero=0;
        else
            numero=cant;
        this.setImage(num[numero]);
    }

    /**
     * Constructor de numero.
     * @param cant es la cantidad con la que iniciara el numero.
     * @param tamX es el ancho en pixeles que tendra la imagen del numero.
     * @param tamY es el alto en pixeles que tendra la imagen del numero.
     */
    public Numero(int cant,int tamX,int tamY)
    {
        this.cargarImagenesNumeros(tamX,tamY);
        if(numero<0)
            numero=0;
        else
            numero=cant;
        this.setImage(num[numero]);
    }

    /**
     * Este metodo se encarga de guardar los numeros en un arreglo los numeros son del (0-9)
     */    
    public void cargarImagenesNumeros(int tamX,int tamY)
    {
        for(int i=0;i<10;i++)
        {
            num[i]=(new GreenfootImage("numero"+i+".png"));
            num[i].scale(tamX,tamY);
        }
    }    

    /**
     * Este metodo se encarga de guardar los numeros en un arreglo los numeros son del (0-9)
     */    
    public void cargarImagenesNumeros()
    {
        for(int i=0;i<10;i++)
            num[i]=(new GreenfootImage("numero"+i+".png"));
    }

    /**
     * Este metodo se encarga de incrementar el numero.
     * @param unaCantidad es la cantidad que se incrementara al numero.
     */
    public int incrementar(int unaCantidad)
    {
        int regreso=0;
        numero=numero+unaCantidad;
        while(numero>9)
        {
            numero=numero-10;
            regreso=regreso+1;
        }
        this.setImage(num[numero]);
        return regreso;
    }

    /**
     * Este metodo se encarga de decrementar el numero.
     * @param unaCantidad es la cantidad que se decrementara al numero.
     */
    public int decrementar(int unaCantidad)
    {
        int regreso=0;
        numero=numero-unaCantidad;
        while(numero<0)
        {
            numero=numero+10;
            regreso=regreso+1;
        }
        this.setImage(num[numero]);
        return regreso;
    }

    /**
     * Este metodo regresa el valor del numero.
     */
    public int getNum()
    {
        return numero;
    }

    /**
     * Este metodo asigna un valor fijo al numero.
     * @param aNum es el numero que se asignará.
     */
    public void fijaNumero(int aNum)
    {
        numero=aNum;
        this.setImage(num[numero]);
    }

}
